let bluetooth = {

	// 1.初始化：打开蓝牙模块
	// 2.搜寻：检测附近存在的设备
	// 3.连接：找到目标设备进行
	// 4.监听：开启监听功能，接收蓝牙设备传过来的数据
	// 5.发送指令：不管发送数据还是读取数据，都可以理解为向外发送指令

	
	//1.初始化蓝牙
	initBlue: function() {
		return new Promise((resolve, reject) => {
			uni.openBluetoothAdapter({
				success(res) {
					console.log('初始化蓝牙成功', res)
				},
				fail(err) {
					// console.log('初始化蓝牙失败')
					uni.showToast({
						title: '初始化蓝牙失败',
						//将值设置为 success 或者直接不用写icon这个参数
						icon: 'error',
						//显示持续时间为 2秒
						duration: 2000
					})
				}
			})
		})
	},

	//2.搜索设备
	discovery: function(found) {
		uni.startBluetoothDevicesDiscovery(

			{
				'allowDuplicatesKey': false, // 不允许重复上报
				success(res) {
					console.log('开始搜索')
					// 开启监听回调
					uni.onBluetoothDeviceFound(found)
				},
				fail(err) {
					uni.showToast({
						title: '开启搜索失败',
						//将值设置为 success 或者直接不用写icon这个参数
						icon: 'error',
						//显示持续时间为 2秒
						duration: 2000
					})
				}
			})
	},


	//3.连接 蓝牙
	createBluConnection: function(data) {

		let deviceId = data.deviceId

		return new Promise((resolve, reject) => {

			uni.createBLEConnection({
				deviceId: deviceId,
				success(res) {
					console.log('连接成功')
					// 停止搜索
					resolve(res)
				},
				fail(err) {
					reject(err)
				}
			})
		})
	},

	//4.停止搜索
	stopDiscovery: function() {
		uni.stopBluetoothDevicesDiscovery({
			success(res) {
				console.log('停止成功')
			},
			fail(err) {
				console.log('停止失败')
			}
		})
	},


	//5.获取服务
	getServices: function(data) {
		let deviceId = data.deviceId
		return new Promise((resolve, reject) => {
			uni.getBLEDeviceServices({
				deviceId: deviceId,
				success(res) {
					resolve(res)
				},
				fail(err) {
					reject(err)
				}
			})
		})
	},

	//6.获取指定服务的特征值
	getCharacteristics: function(deviceId, serviceId) {
		return new Promise((resolve, reject) => {
			uni.getBLEDeviceCharacteristics({
				deviceId: deviceId, // 设备ID，在【4】里获取到
				serviceId: serviceId, // 服务UUID，在【5】里能获取到
				success(res) {
					resolve(res)
				},
				fail(err) {
					reject(err)
				}
			})
		})
	},
	//7.开启消息监听
	notify: function(deviceId,serviceId,characteristicId) {

		return new Promise((resolve, reject) => {
			if (deviceId === '' || serviceId === '' || characteristicId === '') {
				reject(0)
				return
			}
			uni.notifyBLECharacteristicValueChange({
				deviceId: deviceId, // 设备ID，在【4】里获取到
				serviceId: serviceId, // 服务UUID，在【5】里能获取到
				characteristicId: characteristicId, // 特征值，在【6】里能获取到
				success(res) {
					//8.开启消息监听
					uni.onBLECharacteristicValueChange(res => {
						resolve(res)
					})
				},
				fail(err) {
					reject(err)
				}
			})
		})
	},

 

	bleConnectionStateChange: function() {
		uni.onBLEConnectionStateChange(function(res) {
			// 该方法回调中可以用于处理连接意外断开等异常情况
			console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
		})
	}

}



export default bluetooth
